package com.xuyiwei.xblog.modular.system.controller;

import com.baomidou.mybatisplus.mapper.SqlRunner;
import com.baomidou.mybatisplus.plugins.Page;
import com.xuyiwei.xblog.business.system.result.log.input.LoginLogConditionVO;
import com.xuyiwei.xblog.core.base.constant.enums.CommonStatusEnum;
import com.xuyiwei.xblog.core.base.controller.BaseController;
import com.xuyiwei.xblog.core.base.response.Result;
import com.xuyiwei.xblog.core.common.annotion.BussinessLog;
import com.xuyiwei.xblog.core.common.annotion.Permission;
import com.xuyiwei.xblog.core.common.constant.Const;
import com.xuyiwei.xblog.core.common.constant.factory.PageFactory;
import com.xuyiwei.xblog.core.page.PageInfoBT;
import com.xuyiwei.xblog.business.system.model.LoginLog;
import com.xuyiwei.xblog.business.system.service.ILoginLogService;
import com.xuyiwei.xblog.modular.system.warpper.LogWarpper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;
import java.util.Map;

/**
 * 日志管理的控制器
 *
 * @author fengshuonan
 * @Date 2017年4月5日 19:45:36
 */
@Controller
@RequestMapping("/loginLog")
public class LoginLogController extends BaseController {

    private static String PREFIX = "/system/log/";

    @Autowired
    private ILoginLogService loginLogService;

    /**
     * 跳转到日志管理的首页
     */
    @RequestMapping("")
    public String index() {
        return PREFIX + "login_log.html";
    }

    /**
     * 查询登录日志列表
     */
    @RequestMapping("/list")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Result<PageInfoBT> list(LoginLogConditionVO vo) {
        Result<PageInfoBT> result = Result.instance();
        try{
            Page<LoginLog> page = new PageFactory<LoginLog>().defaultPage();
            List<Map<String, Object>> list = loginLogService.getLoginLogs(page, vo, page.getOrderByField(), page.isAsc());
            page.setRecords((List<LoginLog>) new LogWarpper(list).warp());
            result.setData(super.packForBT(page));
        }catch (Exception e){
            result.setError("500","查询登录日志列表失败");
        }
        return result;
    }

    /**
     * 清空日志
     */
    @BussinessLog("清空登录日志")
    @RequestMapping("/delLoginLog")
    @Permission(Const.ADMIN_NAME)
    @ResponseBody
    public Object delLog() {
        Result<Boolean> result = Result.instance();
        try {
//        SqlRunner.db().delete("delete from sys_login_log");
            SqlRunner.db().update("UPDATE sys_login_log SET status = ? ", CommonStatusEnum.DELETE.getKey());
            result.setData(true);
        }catch (Exception e){
            result.setError("500","清空登录日志出错");
        }
        return result;
    }
}
